package com.hbnu.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hbnu.system.model.dto.CheckBackDTO;
import com.hbnu.system.model.dto.IdentifyAddDTO;
import com.hbnu.system.model.dto.SearchPageDTO;
import com.hbnu.system.model.dto.UserDTO;
import com.hbnu.system.model.entity.Identify;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author ${author}
 * @since 2023-05-16
 */
public interface IIdentifyService extends IService<Identify> {

    /**
     * 新增鉴定
     *
     * @param identify
     * @return 是否成功
     */
    boolean addIdentify(Identify identify);

    /**
     * 新增鉴定
     *
     * @param identifyAddDTO
     * @return 是否成功
     */
    boolean addIdentify(IdentifyAddDTO identifyAddDTO);


    /**
     * 删除鉴定
     *
     */
    boolean deleteIdentify(String identifyID);

    /**
     * 修改鉴定
     *
     * @param identify
     * @return 是否成功
     */
    boolean updateIdentify(Identify identify);

    /**
     * 鉴定VO分页查看
     */

    /**
     * 根据鉴定主键查询鉴定
     *
     * @param identifyID
     * @return Identify
     */
    Identify getIdentify(String identifyID);

    /**
     * 鉴定名称查重
     *
     * @param achievementName
     * @return 是否重复
     */
    boolean checkIdentifyName(String achievementName);


    /**
     * 分页查询
     */
    IPage<Identify> pageCondition(SearchPageDTO searchPageDTO);

//    /**=============================== ========================================
//     * 通过id获得identfyvo
//     */
//    PaperVO getIdentifyVO(String id);

    /**
     * 院级审核通过
     */
    Boolean collegeCheckPass(String PID);

    /**
     * 院级审核打回
     */
    Boolean collegeCheckBack(CheckBackDTO checkBackDTO);

    /**
     * 校级审核通过
     */
    Boolean schoolCheckPass(String IdentifyID);

    /**
     * 校级审核打回
     */
    Boolean schoolCheckBack(CheckBackDTO checkBackDTO);

    /**
     * 论文再度提交
     */
    Boolean CommitIdentify(String IdentifyID);

    /**
     * 普通用户分页查看与自己相关的鉴定
     */
    IPage<Identify> userGetRelateIdentify(UserDTO userDTO);

//    /***
//     * 提供合计数据
//     *
//     */
//    float[] getFigure(UserDTO userDTO);

    /**
     * 院级管理员查看需要自己审核的鉴定
     */
    IPage<Identify> collegeUserGetIdentify(UserDTO userDTO);

    /**
     * 校级管理员查看需要自己审核的鉴定
     */
    IPage<Identify> schoolUserGetIdentify(UserDTO userDTO);

    /**
     * 校级管理员查看自己已经审核的鉴定
     */
    IPage<Identify> schoolUserGetIdentifyOver(UserDTO userDTO);
    /**
     * 院级管理员查看自己已经审核的成果鉴定
     */
    IPage<Identify> collegeUserGetIdentifyOver(UserDTO userDTO);
}
